"""快速排序"""""


# 思想是使用分治法，将原始数组分为一个较大的数组和较小的数组，然后递归的排序这两个子数组
# 设置一个基准值，一般是取中间

# 升序排列
def quicksort(arr):
    print(f'当前排序的数组是：{arr}')
    if len(arr) <= 1:  # 递归的终止条件
        return arr
    else:
        pivot = arr[0]  # 初始化基准值
        right, middle, left = [], [], [] # 初始化较大较小两个子数组 和 基准值相等的子数组
        for i in arr:
            if i > pivot:
                right.append(i)
            elif i < pivot:
                left.append(i)
            else:
                middle.append(i)
        print(f'本次调用的基准值是{pivot}')
        print(f'本次调用子数组情况，较小的是：{left}，中间的是：{middle}，较大的是{right}')
        return quicksort(left) + middle + quicksort(right)


ls = [23, 34, 3, 1, 231, 25, 234, 12, 312, 3, 1, -123123423]
print(quicksort(ls))